library(ukpolice)
library(tidyverse)
Registered S3 methods overwritten by 'dbplyr':
  method         from
  print.tbl_lazy     
  print.tbl_sql      
-- Attaching packages ---------------------------- tidyverse 1.3.1 --
v ggplot2 3.3.5     v purrr   0.3.4
v tibble  3.1.6     v dplyr   1.0.7
v tidyr   1.2.0     v stringr 1.4.0
v readr   2.1.2     v forcats 0.5.1
-- Conflicts ------------------------------- tidyverse_conflicts() --
x dplyr::filter() masks stats::filter()
x dplyr::lag()    masks stats::lag()
library(leaflet)
Registered S3 methods overwritten by 'htmltools':
  method               from         
  print.html           tools:rstudio
  print.shiny.tag      tools:rstudio
  print.shiny.tag.list tools:rstudio
Registered S3 method overwritten by 'htmlwidgets':
  method           from         
  print.htmlwidget tools:rstudio
library(leaflet.extras)
date_df <- expand.grid(year = 2020:2021,
                       month = 1:12)
dates <- paste0(date_df$year, "-",
                str_pad(date_df$month, width = 2, pad = "0"))
dates
 [1] "2020-01" "2021-01" "2020-02" "2021-02" "2020-03" "2021-03"
 [7] "2020-04" "2021-04" "2020-05" "2021-05" "2020-06" "2021-06"
[13] "2020-07" "2021-07" "2020-08" "2021-08" "2020-09" "2021-09"
[19] "2020-10" "2021-10" "2020-11" "2021-11" "2020-12" "2021-12"
local_crimes_mh <- lapply(dates,
                       \(d) ukc_crime_coord(lat = 51.5709,
                                            lng = -0.0960,
                                            date = d)) %>%
  bind_rows()
local_crimes_mh %>%
  group_by(category) %>%
  summarise(n = n()) %>%
  mutate(perc = (n*100/sum(n)) %>% round(0)) %>%
  arrange(desc(perc))
local_crimes_mh %>%
  leaflet() %>%
  addTiles() %>%
  addHeatmap(
    lng = ~ longitude %>% as.numeric(),
    lat = ~ latitude  %>% as.numeric()
  )
map_crimes <- function(dat) {
  dat %>%
  leaflet() %>%
  addTiles() %>%
  addCircleMarkers(
    lng = ~ longitude %>% as.numeric() %>% jitter(),
    lat = ~ latitude  %>% as.numeric() %>% jitter(),
    popup = ~ paste0(
      "<B>", category, "</B>",
      "<BR>",
      street_name,
      "<BR>",
      month,
      "<BR><BR>",
      "Outcome: ", outcome_status_category,
      "<BR>(",
      outcome_status_date, ")"
    ),
    radius = 1
  )
}
local_crimes_mh %>%
  map_crimes()
num_10_crimes <- lapply(dates,
                       \(d) ukc_crime_coord(lat = 51.5034,
                                            lng = -0.1276,
                                            date = d)) %>%
  bind_rows()
num_10_crimes %>%
  map_crimes()
num_10_crimes %>%
  filter(str_detect(street_name, "On or near Downing Street")) %>%
  group_by(month, category) %>%
  summarise(n = n())
`summarise()` has grouped output by 'month'. You can override using the `.groups` argument.
LS0tDQp0aXRsZTogIlVLIGNyaW1lIGRhdGEgdGVzdCINCmF1dGhvcjogIkFuZGkgRnVnYXJkIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KDQpgYGB7cn0NCmxpYnJhcnkodWtwb2xpY2UpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkobGVhZmxldCkNCmxpYnJhcnkobGVhZmxldC5leHRyYXMpDQpgYGANCg0KDQoNCg0KYGBge3J9DQpkYXRlX2RmIDwtIGV4cGFuZC5ncmlkKHllYXIgPSAyMDIwOjIwMjEsDQogICAgICAgICAgICAgICAgICAgICAgIG1vbnRoID0gMToxMikNCmBgYA0KDQoNCmBgYHtyfQ0KZGF0ZXMgPC0gcGFzdGUwKGRhdGVfZGYkeWVhciwgIi0iLA0KICAgICAgICAgICAgICAgIHN0cl9wYWQoZGF0ZV9kZiRtb250aCwgd2lkdGggPSAyLCBwYWQgPSAiMCIpKQ0KZGF0ZXMNCmBgYA0KDQoNCmBgYHtyfQ0KbG9jYWxfY3JpbWVzX21oIDwtIGxhcHBseShkYXRlcywNCiAgICAgICAgICAgICAgICAgICAgICAgXChkKSB1a2NfY3JpbWVfY29vcmQobGF0ID0gNTEuNTcwOSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG5nID0gLTAuMDk2MCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZSA9IGQpKSAlPiUNCiAgYmluZF9yb3dzKCkNCmBgYA0KDQoNCmBgYHtyfQ0KbG9jYWxfY3JpbWVzX21oDQpgYGANCg0KDQpgYGB7cn0NCmxvY2FsX2NyaW1lc19taCAlPiUNCiAgZ3JvdXBfYnkoY2F0ZWdvcnkpICU+JQ0KICBzdW1tYXJpc2UobiA9IG4oKSkgJT4lDQogIG11dGF0ZShwZXJjID0gKG4qMTAwL3N1bShuKSkgJT4lIHJvdW5kKDApKSAlPiUNCiAgYXJyYW5nZShkZXNjKHBlcmMpKQ0KYGBgDQoNCg0KDQoNCmBgYHtyfQ0KbG9jYWxfY3JpbWVzX21oICU+JQ0KICBsZWFmbGV0KCkgJT4lDQogIGFkZFRpbGVzKCkgJT4lDQogIGFkZEhlYXRtYXAoDQogICAgbG5nID0gfiBsb25naXR1ZGUgJT4lIGFzLm51bWVyaWMoKSwNCiAgICBsYXQgPSB+IGxhdGl0dWRlICAlPiUgYXMubnVtZXJpYygpDQogICkNCmBgYA0KDQoNCmBgYHtyfQ0KbWFwX2NyaW1lcyA8LSBmdW5jdGlvbihkYXQpIHsNCiAgZGF0ICU+JQ0KICBsZWFmbGV0KCkgJT4lDQogIGFkZFRpbGVzKCkgJT4lDQogIGFkZENpcmNsZU1hcmtlcnMoDQogICAgbG5nID0gfiBsb25naXR1ZGUgJT4lIGFzLm51bWVyaWMoKSAlPiUgaml0dGVyKCksDQogICAgbGF0ID0gfiBsYXRpdHVkZSAgJT4lIGFzLm51bWVyaWMoKSAlPiUgaml0dGVyKCksDQogICAgcG9wdXAgPSB+IHBhc3RlMCgNCiAgICAgICI8Qj4iLCBjYXRlZ29yeSwgIjwvQj4iLA0KICAgICAgIjxCUj4iLA0KICAgICAgc3RyZWV0X25hbWUsDQogICAgICAiPEJSPiIsDQogICAgICBtb250aCwNCiAgICAgICI8QlI+PEJSPiIsDQogICAgICAiT3V0Y29tZTogIiwgb3V0Y29tZV9zdGF0dXNfY2F0ZWdvcnksDQogICAgICAiPEJSPigiLA0KICAgICAgb3V0Y29tZV9zdGF0dXNfZGF0ZSwgIikiDQogICAgKSwNCiAgICByYWRpdXMgPSAxDQogICkNCn0NCmBgYA0KDQoNCg0KDQpgYGB7cn0NCmxvY2FsX2NyaW1lc19taCAlPiUNCiAgbWFwX2NyaW1lcygpDQpgYGANCg0KDQpgYGB7cn0NCm51bV8xMF9jcmltZXMgPC0gbGFwcGx5KGRhdGVzLA0KICAgICAgICAgICAgICAgICAgICAgICBcKGQpIHVrY19jcmltZV9jb29yZChsYXQgPSA1MS41MDM0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbmcgPSAtMC4xMjc2LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlID0gZCkpICU+JQ0KICBiaW5kX3Jvd3MoKQ0KYGBgDQoNCmBgYHtyfQ0KbnVtXzEwX2NyaW1lcyAlPiUNCiAgbWFwX2NyaW1lcygpDQpgYGANCg0KDQpgYGB7cn0NCm51bV8xMF9jcmltZXMgJT4lDQogIGZpbHRlcihzdHJfZGV0ZWN0KHN0cmVldF9uYW1lLCAiT24gb3IgbmVhciBEb3duaW5nIFN0cmVldCIpKSAlPiUNCiAgZ3JvdXBfYnkobW9udGgsIGNhdGVnb3J5KSAlPiUNCiAgc3VtbWFyaXNlKG4gPSBuKCkpDQpgYGANCg0KDQo=